package steuerung.data;

import gui.Konstanten;

import java.util.ArrayList;

import steuerung.Model;

/**
 * 
 * Lager verwalten Unterlager und Buchungen.
 * 
 * @author Jan Geldermann
 *
 */
public class Lager {
	private String name;
	private int bestand;
	
	private ArrayList<Lager> unterlagerList;
	private ArrayList<Buchung> buchungList;
	
	public Lager(String name) {
		unterlagerList = new ArrayList<Lager>();
		buchungList = new ArrayList<Buchung>();
		this.name= name;
	}
	
	@Override
	public String toString() {
		return getName();
	}
	
	public void setName(String neuerName) {
		this.name = neuerName;
	}
	
	public String getName() {
		return name;
	}
	
	public void addUnterlager(Lager l) {
		unterlagerList.add(l);
	}
	
	public ArrayList<Lager> getUnterlager() {
		return unterlagerList;
	}
	
	public void addBuchung(Buchung b) {
		buchungList.add(b);
	}
	
	public int getBestand() {
		int bestand = 0;
		
		if(hasUnterlager()) {
			for(Lager l : unterlagerList) {
				for(Buchung b : l.getBuchungList()) {
					if(b.getArt().equals(Konstanten.AUSLIEFERUNG)) {
						bestand -= b.getMenge();
					} else if (b.getArt().equals(Konstanten.ZULIEFERUNG)) {
						bestand += b.getMenge();
					}
				}
			}
		}
		
		for(Buchung b : buchungList) {
			if(b.getArt().equals(Konstanten.AUSLIEFERUNG)) {
				bestand -= b.getMenge();
			} else if (b.getArt().equals(Konstanten.ZULIEFERUNG)) {
				bestand += b.getMenge();
			}
		}
		
		this.bestand = bestand;
		
		return bestand;
	}
	
	public boolean hasUnterlager() {
		return !unterlagerList.isEmpty();
	}
	
	public ArrayList<Buchung> getBuchungList() {
		return buchungList;
	}
}
